By default jittering is not used. The values should be smaller than 1.0.
Note that the jittering is used even if the supersampling is not used.
***FIX ME*** [DB]
***FIX ME*** [DB]
Thus the halo color map will be repeated by FREQUENCY.
***FIX ME*** [DB]
Thus the color entry for density f(r)=0 can be moved to PHASE modulo 1.0.
***FIX ME*** [DB]
***FIX ME*** [DB]
Special textures use either a texture_map to specify a blend or pattern of textures or they use a bitmap similar to an image_map called a material_map.
There are restrictions on using special textures. A special texture may not be used as a default texture. See the "#default" language directive. A special texture cannot be used as a layer in a layered texture however you may use layered textures as any of the textures contained within a special texture.
{/HEADER 3 Texture Maps}
In addition to specifying blended color with a color_map, or pigment_map, you may create a blend of textures using a texture_map. The syntax for a texture_map is identical to pigment_map except you specify a texture in each map entry.
A texture_map is specified by...
Where NUM_1, NUM_2... are float values between 0.0 and 1.0 inclusive. A TEXTURE_BODY is anything that would normally appear inside a texture {...} statement but the texture keyword and {} braces are not needed. NOTE: the [] brackets are part of the actual statement. They are not notational symbols denoting optional parts. The brackets surround each entry in the map. There may be from 2 to 256 entries in the map.
For example,
When the gradient x function returns values from 0.0 to 0.3 then the red highlighted texture is used. From 0.3 to 0.6 the texture identifier T_Wood11 is used. From 0.6 up to 0.9 a blend of T_Wood11 and a shiny DMFWood4 is used. From 0.9 on up only the shiny wood is used.
Texture maps may be nested to any level of complexity you desire. The textures in a map may have color_map or texture_maps or any type of texture you want.
The blended area of a texture map works by fully calculating both contributing textures in their entirety and then linearly interpolating the apparent colors. This means that reflection, refraction and lighting calculations are done twice for every point. This is in contrast to using a pigment_map and normal_map in a plain texture, where the pigment is computed, then the normal, then reflection, refraction, and lighting are calculated once for that point.
Entire textures may also be used with the block patterns such as checker, hexagon and brick. For example...
Note that in the case of block patterns, the texture {...} wrapping is required around the texture information. Also note that this syntax prohibits the use of a layered texture however you can work around this by declaring a texture identifier for the layered texture and referencing the identifier.
A texture_map is also used with the average pattern type. See "Average" for details.
Instead of placing a solid color of the image on the shape like an image_map, an entire texture is specified based on the index or color of the image at that point. You must specify a list of textures to be used like a "texture palette" rather than the usual color palette.
When used with mapped file types such as GIF, and some PNG and TGA images, the index of the pixel is used as an index into the list of textures you supply. For unmapped file types such as some PNG and TGA images, the 8 bit value of the red component in the range 0-255 is used as an index.
If the index of a pixel is greater than the number of textures in your list then the index is taken modulo N where N is the length of your list of textures.
If particular index values are not used in an image then it may be necessary to supply dummy textures. It may be necessary to use a paint program or other utility to examine the map file's palette to determine how to arrange the texture list.
Where FILE_TYPE is one of the following keywords gif, tga, iff, ppm, pgm, png, or sys. This is followed by the name of the file using any valid string expression. Several optional modifiers may follow the file specification. The modifiers are described below. Note: Earlier versions of POV-Ray allowed some modifiers before the FILE_TYPE but that syntax is being phased out in favor of the syntax described here.
The file name is optionally followed by one or more BITMAP_MODIFIERS. See "bitmap modifiers" for other details.
After a material_map statement but still inside the texture statement you may apply any legal texture modifiers. Note that no other pigment, normal, finish or halo statements may be added to the texture outside the material_map. This is illegal:
The finish must be individually added to each texture.
Note that earlier versions of POV-Ray allowed such specifications but they were ignored. The above restrictions on syntax were necessary for various bug fixes. This means some POV-Ray 1.0 scenes using material_maps many need minor modifications that cannot be done automatically with the version compatibility mode.
The textures within a material_map texture may be layered but material_map textures do don't work as part of a layered texture. To use a layered texture inside a material_map you must declare it as a texture identifier and invoke it in the texture list.
You create layered textures by listing two or more textures one right after the other. The last texture listed will be the top layer, the first one listed will be the bottom layer. All textures in a layered texture other than the bottom layer should have some transparency. For example:
In this example T2 shows only where T3 is transparent and T1 shows only where T2 and T3 are transparent.
The color of underlying layers is filtered by upper layers but the results do not look exactly like a series of transparent surfaces. If you had a stack of surfaces with the textures applied to each, the light would be filtered twice: once on the way in as the lower layers are illuminated by filtered light and once on the way out. Layered textures do not filter the illumination on the way in. Other parts of the lighting calculations work differently as well. The result look great and allow for fantastic looking textures but they are simply different from multiple surfaces. See STONES.INC in the standard include files for some magnificent layered textures.
Layered textures may be declared. For example:
Then invoke it as follows:
If you wish to use a layered texture in a block pattern such as checker, hexagon, or brick or in a material_map, you must declare it first and then reference it inside a single texture statement. A special texture cannot be used as a layer in a layered texture however you may use layered textures as any of the textures contained within a special texture.
All patterns in POV-Ray are three dimensional. For every point in space, each pattern has a unique value. Patterns do not wrap around a surface like putting wallpaper on an object. The patterns exist in 3-d and the objects are carved from them like carving an object from a solid block of wood or stone.
Consider a block of wood. It contains light and dark bands that are concentric cylinders being the growth rings of the wood. On the end of the block you see these concentric circles. Along its length you see lines that are the veins. However the pattern exists throughout the entire block. If you cut or carve the wood it reveals the pattern inside. Similarly an onion consists of concentric spheres that are visible only when you slice it. Marble stone consists of wavy layers of colored sediments that harden into rock.
These solid patterns can be simulated using mathematical functions. Other random patterns such as granite or bumps and dents can be generated using a random number system and a noise function.
In each case, the x, y, z coordinate of a point on a surface is used to compute some mathematical function that returns a float value. When used with color maps or pigment maps, that value looks up the color of the pigment to be used. In normal statements, the pattern function result modifies or perturbs the surface normal vector to give a bumpy appearance. Used with a texture map, the function result determines which combinations of entire textures to be used.
See the sections "pigment" , "color_map" , "normal" , and "texture_map" for more details on how to use patterns. The following sections describe each pattern.
This pattern is a banded pattern similar to marble, but it uses a specialized built-in turbulence function that is different from the traditional turbulence. The traditional turbulence can be used as well but it is generally not necessary because agate is already very turbulent. You may control the amount of the built-in turbulence by adding the agate_turb keyword followed by a float value. For example:
The agate pattern uses the ramp_wave wave type by default but may use any wave type. The pattern may be used with color_map, pigment_map, normal_map, slope_map and texture_map.
When used with pigments, the syntax is:
A PIGMENT_BODY is anything that would normally appear inside a pigment {...} statement but the pigment keyword and the {} braces are not needed. NOTE: the [] brackets are part of the actual statement. They are not notational symbols denoting optional parts. The brackets surround each entry in the map. There may be from 2 to 256 entries in the map. The values WEIGHT_1, WEIGHT_2, etc. are optional float values that specify the relative weight of each pigment. The default weight if unspecified is 1.0. All of the pigments are computed separately, the colors are then weighted and averaged.
Similarly you may use a texture map in a texture statement. All textures are fully computed. The resulting colors are then weighted and averaged.
When used with a normal map in a normal statement, multiple copies of the original surface normal are created and are perturbed by each pattern. The perturbed normals are then weighted, added and normalized.
See the sections "pigment_map" , "normal_map" , and "texture_map" for more information.